package com.lengchangjing.BehavioralPatterns.InterpreterPattern.example;

/**
 * 乘法表达式，是非终结符表达式（NonterminalExpression）。
 */
public class Multiply extends Expression {

    // 被乘数，乘数
    private Expression multiplicand, multiplier;

    /**
     * 构造器
     *
     * @param multiplicand 被乘数
     * @param multiplier   乘数
     */
    public Multiply(Expression multiplicand, Expression multiplier) {
        this.multiplicand = multiplicand;
        this.multiplier = multiplier;
    }

    /**
     * 乘法语法解释
     *
     * @param ctx 上下文
     * @return 乘法计算结果
     */
    @Override
    public int interpret(Context ctx) {
        return multiplicand.interpret(ctx) * multiplier.interpret(ctx);
    }
}
